5

ing...

背景

是什么

API

使用WebSocket构造函数创建webSocket对象。

var webSocket = new WebSocket('ws://localhost:8080');

构造器创建的时候就会开始建立连接(跟服务进行握手操作),并且readyState等于0。 如果握手成功,则会触发open事件,并且readyState等于1;反之如果导致握手失败(url不正确等),WebSocket会喷出error日志,并且触发error, close事件,并且readyState等于3。

属性

1. url

<String>,只读,webSocket服务地址。在创建WebSocket对象是传入的值。
url的方案是ws://或者wss://。

2. readState

<int>, 只读,表示WebSocket对象的状态。可取值的枚举:

WebSocket.CONNECTING (0):表示还未建立连接;
WebSocket.OPEN (1): 表示已经建立连接,可以和服务进行通信了;
WebSocket.CLOSING (2): 表示连接正在关闭连接,进行关闭连接握手;
WebSocket.CLOSED (3): 表示链接已经被关闭了。

3.protocol

<String>|<[String]>, 只读,子协议。

4.事件属性方法

还有4个事件对应的方法:onopen, onclose, onmessage, onerror。

方法

1.send(data)

向服务发送数据data。
注意只有readyState等于OPEN(1)时才能正确执行该方法,否则会抛异常。
data必须是字符串???

2.close

关闭连接。会触发close事件。被close的webScoket不能重新建立连接。

事件

兼容性

WebScoket, MozWebScoket

WebSocket服务

原理

握手

WebSocket协议中的握手过程通过http协议完成的。

Client### ?

Request:
Sec-WebSocket-Extensions
Sec-WebSocket-Key
Sec-WebSocket-Version
Upgrade:websocket

Response:
Sec-WebSocket-Accept

参考

  1. 介绍:https://www.webcodegeeks.com/...
  2. 规范:https://www.w3.org/TR/2011/WD...
  3. API:https://developer.mozilla.org...
  4. 介绍:https://www.websocket.org/qua...
  5. WebSocket数据包协议详解: http://www.cnblogs.com/smark/...

普拉斯强
2.7k 声望53 粉丝

Coder